// .txt

beginzonescript;

variables;

short crime_tolerance = 5;
short last_abil;
short i;
short att = 0;
short dis_count = 0;
short door_mes = 0;
short event_count = 0;

body;

beginstate INIT_STATE;
	sf(77,25,1);
	sf(77,29,1);
	
	sf(77,10,0);
	sf(77,17,0);
	
	if (gf(77,15) == 1)
		sf(77,15,0);
	
	set_name(8,"Mind Controller");

	add_range_to_group(13,17,1);

	add_range_to_group(36,40,4);
	set_name(40,"Commander Thorl");
	set_boss_level(40,1);

	// now if not a taygen servant, all will go hostile
	if (gf(100,4) != 2)
		make_zone_hostile();
	// 77,8 gets set to 1 when party sighted, this turns dera reaches
	// angry everywhere
	if (get_sdf(77,8) > 0) {
		make_zone_hostile();
		}

	last_abil = get_current_tick();
	
	set_crime_tolerance(crime_tolerance);
	break;

beginstate EXIT_STATE;

break;

beginstate START_STATE;
	if ((att == 0) && (gf(77,8) > 0)) {
		att = 1;
				
		sf(64,1,1);
		if (gf(100,4) == 2)
			sf(100,4,3);
		}
		
	// clear zone?
	if ((zone_clear(ME) == FALSE) && (get_flag(100,25) > 0)) {
		clear_zone(ME);	
		}
	if ((zone_clear(ME) == FALSE) && (get_flag(100,17) > 0)) {
		clear_zone(ME);	
		}
	if ((zone_clear(ME) == FALSE) && (get_flag(100,21) > 0)) {
		clear_zone(ME);	
		}
		
	if ((get_crime_level() >= crime_tolerance) && (get_sdf(77,8) == 0)) {
		make_zone_hostile();
		set_flag(77,8,1);
		}

	// if (gf(,) == 0) {
	//	if (get_ran(1,0,100) < 10)
	//		give_char_text_bubble(,"");
	//	}

	if (gf(77,15) == 1) {
		if ((num_chars_in_group(1) == 0) && (num_chars_in_group(2) == 0) && (num_chars_in_group(3) == 0) && (party_dist_to_nav(3) <= 10)) {
				// teh win
				sf(100,25,1);
				award_party_xp(200,30);
				sf(77,15,2);
				sf(77,25,1);
				sf(77,29,1);
				begin_talk_mode(136);
				}
		if ((num_chars_in_group(1) == 0) && (num_chars_in_group(2) == 0) && (num_chars_in_group(3) == 0) && (party_dist_to_nav(3) > 10) && (gf(77,22) == 0)) {
				sf(77,22,1);
				begin_talk_mode(142);
				}
		}
	
	if (((is_combat()) && (tick_difference(last_abil,get_current_tick()) > 0)) || ((is_group()) && (tick_difference(last_abil,get_current_tick()) > 5))) {
		last_abil = get_current_tick();
		
		// main agent event
		if ((gf(77,15) == 1) && (gf(77,8) == 1)) {
			// party went crazy, shut it down
			sf(77,15,0);
			print_str_color("All work on making the Purity Agent ceases.",3);
			}
		if (gf(77,15) == 1) {

			event_count = event_count + 1;
			if (event_count == 2) {
				erase_char(44);
				erase_char(45);
				begin_talk_mode(130);
				}
			if (event_count == 4)
				begin_talk_mode(131);
			if (event_count == 6) {
				activate_hidden_group(1);
				add_range_to_group(18,24,2);
				set_attitude(1001,10);
				begin_talk_mode(132);
				}
			if (event_count == 10) {
				activate_hidden_group(2);
				add_range_to_group(25,31,3);
				
				set_name(30,"Guardian Erasmus");
				set_level(30,30);
				set_new_abil(30,12);
				set_boss_level(30,1);
				set_name(31,"Guardian Orolo");
				set_level(31,30);
				set_new_abil(31,13);
				set_boss_level(31,1);
				
				begin_talk_mode(133);
				}
			
			// major event stuff?
			if ((gf(77,19) > 0) && (gf(77,18) == 0)) {
				sf(77,18,1);
				begin_talk_mode(132);
				}
			if (gf(77,18) >= 20) { // all is lost
				begin_talk_mode(135);
				}
			
			}
			
		// turn back on power?
		if ((gf(77,10) == 1) && (gf(77,17) >= 50)) {
			sf(77,10,2);
			begin_talk_mode(12);
			}
			
		// poison after agent done
		dis_count = dis_count + 1;
		if (dis_count == 3) {
			dis_count = 0;
			if (gf(100,21) > 0) {
				print_str_color("The poison in the air is getting to you.",2);
				damage_char(1000,100 + get_ran(1,0,100),4);
				if (gf(77,14) == 0) {
					sf(77,14,1);
					begin_talk_mode(9);
					}
				}
			}
		
		}
break;

beginstate 10;
	set_terrain_string_range("The sign says - Rejuvenation pools under repair. Use northern cell pools.",3);
break;

beginstate 11;
	set_terrain_string_range("The sign says - Operations Mind.",3);
break;

beginstate 12;
	set_terrain_string_range("The sign says - Sample Storage.",3);
break;

beginstate 13;
	set_terrain_string_range("The sign says - Sample Collection.",3);
break;

beginstate 14;
	set_terrain_string_range("The sign says - PURITY AGENT SYNTHESIS. DO NOT DISTURB POOL.",3);
break;

beginstate 15;
	set_terrain_string_range("The sign says - .",3);
break;

beginstate 16;
	set_terrain_string_range("The sign says - .",3);
break;

beginstate 20;
	if ((gf(77,29) == 0) && (door_mes == 0)) {
		door_mes = 1;
		begin_talk_mode(10);
		}
break;

//	print_str("");
//	set_terrain_string_range(".",3);
//	set_terrain_string_range("The sign says - .",3);
